package com.zdxlz.fcmp.common.core.constant.enums;

import lombok.Getter;

@Getter
public enum ResCode {
    SUCESS(0, "成功"),

    /**
     * 通用信息状态码和信息
     */
    ERR_COMMON_UN_KNOW(100001, "未知错误"),
    ERR_COMMON_LACK(100002, "参数缺失"),
    ERR_COMMON_PARAMS(100003, "参数错误"),

    /**
     * 第三方模块对接状态码
     */
    ERR_EXTERNAL_SYS_APP_ID_UN_KNOW(110001, "应用ID不存在"),
    ERR_EXTERNAL_SYS_APP_ID_DISABLED(110002, "应用ID已停用"),
    ERR_EXTERNAL_SYS_TIMESTAMP_INVALID(110003, "请求时间戳无效"),
    ERR_EXTERNAL_SYS_SIGN_VERIFY_FAIL(110004, "认证失败"),

    /**
     * 认证相关状态码和信息
     */
    ERR_AUTH_LACK(120001, "TOKEN缺失"),
    ERR_AUTH_INVALID(120002, "TOKEN非法"),
    ERR_AUTH_EXPIRE(120003, "TOKEN过期"),
    ERR_USER_UNAUTHORIZED(120004, "用户未认证，请先登录！"),
    ERR_USER_ACCESS_DENIED(120005, "权限不足，拒绝访问！"),

    /**
     * 登录模块
     */
    ERR_LOGIN_INFO_MISS(130001, "登录信息缺失"),
    ERR_LOGIN_FAILED(130002, "登陆认证失败"),
    RESETPASSWORD__OLD_PASSWORD_ERROR(130003, "重置密码，原密码错误！"),
    RESETPASSWORD_NEWPASSWORD_OLDPASSWORD_NOT_EQUAL(130004, "重置密码，新密码不能和原密码相同！"),
    RESETPASSWORD_NEWPASSWORD_CONFIRMPASSWORD_NOT_EQUAL(130005, "重置密码，新密码和确认密码不同！"),
    RESETPASSWORD_PASSWORD_NOT_EMPTY(130005, "重置密码，密码不能为空！"),
    ERROR_MOBILE_MISMATCH(130006, "退出系统，手机号不匹配！"),

    /**
     * 用户模块
     */
    ERROR_USER_NOT_EXIST(140001, "用户不存在"),
    ERROR_USER_DISABLED(140002, "用户已停用"),
    ERROR_USER_MOBILE_DISABLED(140003, "用户手机号重复，操作失败！"),
    ERROR_USER_BANDED_ROLE(140004, "当前用户已绑定了角色，不能删除！"),
    ERROR_USER_QY_STATUS(140005, "当前用户是启用状态，不能删除！"),

    /**
     * 设备模块
     */
    ERROR_DEVICE_OFFLINE(150001, "设备离线"),
    ERROR_DEVICE_NOT_WAN_IP(150002, "设备WAN IP未获取到"),
    ERROR_DEVICE_NOT_PROTECTED_SUBNET(150003, "设备保护网段未获取到"),
    ERROR_DEVICE_PROTECTED_SUBNET_CONFLICT(150004, "设备保护网段冲突"),

    /**
     * IPSec配置模块
     */
    VPN_NAME_IS_DUPLICATED(160001, "IPSec配置名称重复！"),
    VPN_ACTIVATE_USED_NO_UPDATE(160002, "该IPSec配置是启用状态，无法修改！"),
    IPSEC_ID_NOT_NULL(160003, "该IPSec配置ID为空，删除失败！"),

    /**
     * IPSec模板配置模块
     */
    VPN_TEMPLATE_NAME_IS_DUPLICATED(170001, "IPSec模板名称重复！"),
    VPN_TEMPLATE_USED_NO_UPDATE(170002, "该IPSec模板配置已被IPSec配置使用，无法修改！"),
    VPN_TEMPLATE_USED_NO_DELETE(170003, "该IPSec模板配置已被IPSec配置使用，无法删除！"),
    VPN_TEMPLATE_ENABLE_NO_DELETE(170004, "该IPSec模板配置是启用状态，无法删除！"),
    VPN_TEMPLATE_NOT_EXIST(170005, "该IPSec模板配置不存在，无法删除！"),

    /**
     * KMS配置模块
     */
    KMS_NAME_DUPLICATED(180001, "KMS名称重复"),
    KMS_NAME_DUPLICATED_NO_UPDATE(180002, "KMS名称重复，无法修改！"),

    /**
     * 菜单模块
     */
    INSERT_MENU_ROUTNAME_OR_PATH_REPEAT(190000, "路由路径或路由名称重复，操作失败！"),
    MENU_BANDED_ROLE(190001, "当前菜单已被角色绑定，不能删除！"),
    CURRENT_MENU_HAVE_LOWER_MENU(190002, "当前菜单下有启用的子菜单，不能删除！"),
    MENU_NOT_EXIST(190003, "部分菜单不存在，操作失败！"),
    ERROR_MENU_QY_STATUS(190004, "当前菜单或子菜单是启用状态，不能删除！"),

    /**
     * 数据库模块
     */
    DATABASE_UNIQUE_REPEAT(200000, "数据库表【unique】重复，操作失败！"),

    /**
     * 角色模块
     */
    RULE_NOT_EXIST(310000, "部分角色不存在，操作失败！"),
    RULE_BANDED_USER(310001, "当前角色已被用户绑定，不能删除！"),
    RULE_BANDED_MENU(310002, "当前角色绑定了菜单，不能删除！"),
    RULE_CODE_REPEAT(310003, "当前租户下，角色名称或角色编号重复，操作失败！"),
    ERROR_ROLE_QY_STATUS(310004, "当前角色是启用状态，不能删除！"),

    /**
     * 租户模块
     */
    TENANT_USER_MOBILE_REPEAT(410000, "用户手机号重复，操作失败！"),
    TENANT_NAME_MOBILE_REPEAT(410001, "租户名称或者联系人手机号重复，操作失败！"),
    TENANT_ACTIVE_STATUS(410002, "当前租户是启用状态，不能删除！"),
    TENANT_EXIST_USER(410003, "当前租户下存在用户，不能删除！"),

    /**
     * 日志模块
     */
    LOG_PARAMETER_MISSING(510000, "查询日志，参数缺失！"),
    ;


    private final int code;
    private final String reason;

    private ResCode(int value, String reason) {
        this.code = value;
        this.reason = reason;
    }
}
